#ifndef __MYSTACK_H__
#define __MYSTACK_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "common.h"

// 定义栈的最大容量
#define MAX_SIZE 100

// 定义栈结构
typedef struct {
    int* data[MAX_SIZE];  // 存储栈元素的数组（每个元素是一个int*）
    int top;              // 栈顶指针
} Stack;

// 初始化栈
extern void initStack(Stack* stack);
// 检查栈是否为空
extern bool isEmpty(Stack* stack);
// 检查栈是否已满
extern bool isFull(Stack* stack);
// 入栈操作
extern int push(Stack* stack, int* value);
// 出栈操作
extern int* pop(Stack* stack);
// 查看栈顶元素
extern int* peek(Stack* stack);
// 销毁栈（释放所有动态分配的内存）
extern void destroyStack(Stack* stack);
// 打印栈中的元素
extern void printStack(Stack* stack);

#ifdef __cplusplus
}
#endif

#endif